/**
 * <copyright>
 * </copyright>
 *
 * $Id$
 */
package net.yienyien.process.bpel;

import org.eclipse.wst.wsdl.Message;


/**
 * <!-- begin-user-doc -->
 * A representation of the model object '<em><b>Variable</b></em>'.
 * <!-- end-user-doc -->
 *
 * <p>
 * The following features are supported:
 * <ul>
 *   <li>{@link net.yienyien.process.bpel.Variable#getOpaqueFrom <em>Opaque From</em>}</li>
 *   <li>{@link net.yienyien.process.bpel.Variable#getFrom <em>From</em>}</li>
 *   <li>{@link net.yienyien.process.bpel.Variable#getElement <em>Element</em>}</li>
 *   <li>{@link net.yienyien.process.bpel.Variable#getMessageType <em>Message Type</em>}</li>
 *   <li>{@link net.yienyien.process.bpel.Variable#getName <em>Name</em>}</li>
 *   <li>{@link net.yienyien.process.bpel.Variable#getType <em>Type</em>}</li>
 *   <li>{@link net.yienyien.process.bpel.Variable#getMessageTypeRef <em>Message Type Ref</em>}</li>
 * </ul>
 * </p>
 *
 * @see net.yienyien.process.bpel.BpelPackage#getVariable()
 * @model extendedMetaData="name='tVariable' kind='elementOnly'"
 * @generated
 */
public interface Variable extends ExtensibleElements {
	/**
	 * Returns the value of the '<em><b>Opaque From</b></em>' containment reference.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Opaque From</em>' containment reference isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Opaque From</em>' containment reference.
	 * @see #setOpaqueFrom(ExtensibleElements)
	 * @see net.yienyien.process.bpel.BpelPackage#getVariable_OpaqueFrom()
	 * @model containment="true"
	 *        extendedMetaData="kind='element' name='opaqueFrom' namespace='##targetNamespace'"
	 * @generated
	 */
	ExtensibleElements getOpaqueFrom();

	/**
	 * Sets the value of the '{@link net.yienyien.process.bpel.Variable#getOpaqueFrom <em>Opaque From</em>}' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Opaque From</em>' containment reference.
	 * @see #getOpaqueFrom()
	 * @generated
	 */
	void setOpaqueFrom(ExtensibleElements value);

	/**
	 * Returns the value of the '<em><b>From</b></em>' containment reference.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>From</em>' containment reference isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>From</em>' containment reference.
	 * @see #setFrom(From)
	 * @see net.yienyien.process.bpel.BpelPackage#getVariable_From()
	 * @model containment="true"
	 *        extendedMetaData="kind='element' name='from' namespace='##targetNamespace'"
	 * @generated
	 */
	From getFrom();

	/**
	 * Sets the value of the '{@link net.yienyien.process.bpel.Variable#getFrom <em>From</em>}' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>From</em>' containment reference.
	 * @see #getFrom()
	 * @generated
	 */
	void setFrom(From value);

	/**
	 * Returns the value of the '<em><b>Element</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Element</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Element</em>' attribute.
	 * @see #setElement(Object)
	 * @see net.yienyien.process.bpel.BpelPackage#getVariable_Element()
	 * @model dataType="net.yienyien.process.bpel.QName"
	 *        extendedMetaData="kind='attribute' name='element'"
	 * @generated
	 */
	Object getElement();

	/**
	 * Sets the value of the '{@link net.yienyien.process.bpel.Variable#getElement <em>Element</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Element</em>' attribute.
	 * @see #getElement()
	 * @generated
	 */
	void setElement(Object value);

	/**
	 * Returns the value of the '<em><b>Message Type</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Message Type</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Message Type</em>' attribute.
	 * @see #setMessageType(Object)
	 * @see net.yienyien.process.bpel.BpelPackage#getVariable_MessageType()
	 * @model dataType="net.yienyien.process.bpel.QName"
	 *        extendedMetaData="kind='attribute' name='messageType_old'"
	 * @generated
	 */
	Object getMessageType();

	/**
	 * Sets the value of the '{@link net.yienyien.process.bpel.Variable#getMessageType <em>Message Type</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Message Type</em>' attribute.
	 * @see #getMessageType()
	 * @generated
	 */
	void setMessageType(Object value);

	/**
	 * Returns the value of the '<em><b>Name</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Name</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Name</em>' attribute.
	 * @see #setName(Object)
	 * @see net.yienyien.process.bpel.BpelPackage#getVariable_Name()
	 * @model dataType="net.yienyien.process.bpel.BPELVariableName"
	 *        extendedMetaData="kind='attribute' name='name'"
	 * @generated
	 */
	Object getName();

	/**
	 * Sets the value of the '{@link net.yienyien.process.bpel.Variable#getName <em>Name</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Name</em>' attribute.
	 * @see #getName()
	 * @generated
	 */
	void setName(Object value);

	/**
	 * Returns the value of the '<em><b>Type</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Type</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Type</em>' attribute.
	 * @see #setType(Object)
	 * @see net.yienyien.process.bpel.BpelPackage#getVariable_Type()
	 * @model dataType="net.yienyien.process.bpel.QName"
	 *        extendedMetaData="kind='attribute' name='type'"
	 * @generated
	 */
	Object getType();

	/**
	 * Sets the value of the '{@link net.yienyien.process.bpel.Variable#getType <em>Type</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Type</em>' attribute.
	 * @see #getType()
	 * @generated
	 */
	void setType(Object value);

	/**
	 * Returns the value of the '<em><b>Message Type Ref</b></em>' reference.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Message Type Ref</em>' reference isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Message Type Ref</em>' reference.
	 * @see #setMessageTypeRef(Message)
	 * @see net.yienyien.process.bpel.BpelPackage#getVariable_MessageTypeRef()
	 * @model extendedMetaData="kind='attribute' name='messageType'"
	 * @generated
	 */
	Message getMessageTypeRef();

	/**
	 * Sets the value of the '{@link net.yienyien.process.bpel.Variable#getMessageTypeRef <em>Message Type Ref</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Message Type Ref</em>' reference.
	 * @see #getMessageTypeRef()
	 * @generated
	 */
	void setMessageTypeRef(Message value);

} // Variable
